home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / libs / sphigs / sph_mac.hqx / SRGP port to 5.0 (compressed) / SRGP_SPHIGS Root / MacSPHIGS / sph_objdebug.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-13  |  4.7 KB  |  164 lines

  1. #include "HEADERS.h"
  2. /**********************
  3.                       *
  4.  File                 * objdebug.c
  5.                       *
  6.                       *********************************************************/
  7.  
  8. /**********************
  9.                       *
  10.  Includes          *
  11.                       *
  12.                       *********************************************************/
  13.  
  14. #include <stdio.h>
  15. #include <assert.h>
  16. #include <math.h>
  17.  
  18. #include "sphigslocal.h"
  19.  
  20. #include "sph_objdebug.proto.h"
  21.  
  22.  
  23. /**********************
  24.                       *
  25.  Prototypes          *
  26.                       *
  27.                       *********************************************************/
  28.  
  29. void print_objects_in_view( );
  30. void print_objects( );
  31. void print_object( );
  32.  
  33. void
  34. print_objects_in_view (view_spec *vs)
  35. {
  36.      assert( vs != NULL );
  37.      print_objects( vs, vs->objects );
  38. }
  39.  
  40. int
  41. count_objects(obj *current)
  42. {
  43.      register i = 0;
  44.      
  45.      while( current != NULL ) {
  46.       i++;
  47.       current = current->next;
  48.      }
  49.      
  50.      return( i );
  51. }
  52.  
  53. void
  54. print_objects(view_spec *vs, obj *current)
  55. {
  56.      assert( vs != NULL );
  57.      fprintf( stdout, "START OF LIST\n" );
  58.      while (current) {
  59.       print_object( vs, current, 0 );
  60.       current = current -> next;
  61.      }
  62.      fprintf( stdout, "END OF LIST\n" );
  63. }
  64.  
  65. void
  66. print_object(view_spec *vs, obj *current, int where)
  67. {
  68.      register i;
  69.      FILE * stream;
  70.      
  71.      assert( vs != NULL );
  72.      assert( current != NULL );
  73.      
  74.      if( where == 1 )
  75.       stream = stderr;
  76.      else
  77.       stream = stdout;
  78.      
  79.      fprintf( stream, "[ ]\tobject address = 0x%x\n", (long) current );
  80.      fprintf( stream, "\tobject type = " );
  81.      switch( current->type ) {
  82.     case objFace:
  83.       printf( "face\n" );
  84.       break;
  85.     case objLine:
  86.       printf( "face\n" );
  87.       break;
  88.     case objText:
  89.       printf( "text\n" );
  90.       break;
  91.     case objPoint:
  92.       printf( "point\n" );
  93.       break;
  94.      }
  95.      
  96.      fprintf( stream, "\tnormal = [ %lf %lf %lf %lf ]\n", current->normal[0],
  97.          current->normal[1], current->normal[2], current->normal[3] );
  98.      
  99.      fprintf( stream, "\tp normal = [ %lf %lf %lf %lf ]\n", current->p_normal[0],
  100.          current->p_normal[1], current->p_normal[2], current->p_normal[3] );
  101.      
  102.      fprintf( stream, "\tmin = [ %lf %lf %lf %lf ]\n", current->min[0],
  103.          current->min[1], current->min[2], current->min[3] );
  104.      
  105.      fprintf( stream, "\tmax = [ %lf %lf %lf %lf ]\n", current->max[0],
  106.          current->max[1], current->max[2], current->max[3] );
  107.      
  108.      fprintf( stream, "\tintensity = %lf\n", current->intensity );
  109.      fprintf( stream, "\tdirected distance = %lf\n", current->directed_distance );
  110.      
  111.      switch( current->type ) {
  112.     case objFace:
  113.       fprintf( stream, "\tinterior color = %d\n", current->attributes.interior_color );
  114.       fprintf( stream, "\tnumPoints = %d\n", current->data.face.numPoints );
  115.       fprintf( stream, "\tpoints = 0x%x\n", (long) current->data.face.points );
  116.       assert( current->data.face.points != NULL );
  117.       fprintf( stream, "\tarray = " );
  118.       for( i = 0; i < current->data.face.numPoints; i++ )
  119.            fprintf( stream, "%d ", (int) current->data.face.points[ i ] );
  120.       fprintf( stream, "\n" );
  121.       for( i = 0; i < current->data.face.numPoints; i++ ) {
  122.            if( vs->npcVertices != NULL ) {
  123.             fprintf( stream, "\t\t%d (%lf %lf %lf) (%lf %lf %lf)\n", current->data.face.points[ i ],
  124.                 vs->uvnVertices[current->data.face.points[i] ][0],
  125.                 vs->uvnVertices[current->data.face.points[i] ][1],
  126.                 vs->uvnVertices[current->data.face.points[i] ][2],
  127.                 vs->npcVertices[current->data.face.points[i] ][0],
  128.                 vs->npcVertices[current->data.face.points[i] ][1],
  129.                 vs->npcVertices[current->data.face.points[i] ][2] );
  130.            } else {
  131.             fprintf( stream, "\t\t%d (%lf %lf %lf)\n", current->data.face.points[ i ],
  132.                 vs->uvnVertices[current->data.face.points[i] ][0],
  133.                 vs->uvnVertices[current->data.face.points[i] ][1],
  134.                 vs->uvnVertices[current->data.face.points[i] ][2] );
  135.            }
  136.       }
  137.       
  138.      
  139.       fprintf( stream, "\tp_min = [ %lf %lf %lf %lf ]\n", current->p_min[0],
  140.           current->p_min[1], current->p_min[2], current->p_min[3] );
  141.      
  142.       fprintf( stream, "\tp_max = [ %lf %lf %lf %lf ]\n", current->p_max[0],
  143.           current->p_max[1], current->p_max[2], current->p_max[3] );
  144.       
  145.       break;
  146.       
  147.     case objLine:
  148.       fprintf( stream, "\tend1 = [ %lf %lf %lf %lf ]\n", current->data.line.end1[0],
  149.           current->data.line.end1[1], current->data.line.end1[2], current->data.line.end1[3] );
  150.       
  151.       fprintf( stream, "\tend2 = [ %lf %lf %lf %lf ]\n", current->data.line.end2[0],
  152.           current->data.line.end2[1], current->data.line.end2[2], current->data.line.end2[3] );
  153.       break;
  154.       
  155.     case objText:
  156.       fprintf( stream, "\ttext = %s\n", current->data.text.text );
  157.       break;
  158.       
  159.     case objPoint:
  160.       break;
  161.      }
  162.      
  163. }
  164.